In embedded systems, memory and die size are important factors in determining the final cost of integrated circuits. Integrated circuits are used for a variety of applications including audio and video decoders.
Arithmetic operations of digital signal processors are often performed in fixed point as opposed to floating point in many integrated circuits. Performance of arithmetic operations in fixed point reduces the memory and die size of the integrated circuit.
A collection of N binary digits has 2N possible states. In the most general sense, these states can represent many things. There is no meaning inherent in a binary word. However, the meaning of an N-bit binary word depends entirely on its interpretation. In an N-bit word, if the decimal point is deemed to be at the extreme right, any unsigned integer from 0 to 2N−1 can be represented. Alternatively, any signed integer from −2N−1 to 2N−1−1 can be represented. For example, where N=16, any integer number from −32768 to 32767 can be represented.
If the decimal point is placed one position left from the extreme right (i.e., the least significant bit of the register), then the dynamic range of the number is reduced by a factor of two but the resolution is increased by the same factor of two. Accordingly, there is a tradeoff between the dynamic range and the resolution. For example, where N=32, a signed number represented in a Q(1, 31) format (1 integer bit, 31 decimal bits), has a dynamic range between −1 and slightly less than 1, but with 2−31 resolution.
Generally most computations in fixed point arithmetic are done in Q(1, 31) format since it gives the highest possible resolution. If the dynamic range before the computation is outside −1 to 1, the number is appropriately scaled by left shifting so that the desired number can be represented in Q(1, 31)format(assuming the register width is 32 bits wide).
However, the computation of non-linear functions, such as, for example, exponential functions, is complex. For example, in the case of an MPEG-2 AAC decoder and MPEG-1 Layer-3 Decoder, spectral values are Huffman coded. In the decoder, the spectral values are Huffman decoded and need to be scaled by raising them to a 4/3 exponential factor (e.g., F(x)=x4/3) in the inverse quantization block. The Huffman decoded spectral values are in the range of 0 to 8191 (213−1).
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art through comparison of such systems with embodiments presented in the remainder of the present application with reference to the drawings.